const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const optimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')

// 复用loader
const commonCssLoader = [
  MiniCssExtractPlugin.loader,
  'css-loader',
  {
    loader: 'postcss-loader',
    options: {
      ident: 'postcss',
      plugins: () => [require('postcss-preset-env')()]
    }
  }
]
/**
 * codeSplit: 将打包输出的一个文件分割成多个文件（可以达到文件的并行加载，从而加载速度更快，分割更多的文件还能完成按需加载的功能）
 *            主要分割js代码
 * 1. 根据入口文件代码分割
 * 
 */

module.exports = {
  // entry: './src/js/index.js',  单入口对应单应用
  // 修改入口的值为一个对象,多入口：
  //  特点：有一个入口，最终输出就有一个bundle
  //  用于多页面应用
  entry: {
    main: './src/js/index.js',
    test: './src/js/test.js'
  },
  output: {
    filename: 'js/[name].[contenthash:10].js',
    path: resolve(__dirname, 'build')
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html',
      minify: {
        collapseWhitespace: true,
        removeComments: true
      }
    }),
    new MiniCssExtractPlugin({
      filename: 'css/main.[contenthash:10].css'
    }),
    new optimizeCssAssetsWebpackPlugin()
  ],
  mode: 'production',
}
